UNIT LeCelula;

interface

uses
Crt,Dos,Graph,ADC,EXTDR,GlobVar,calnvc,show,escreva;

Const

    CYpos  :  array[1..13] of Integer = (26,38,50,62,74,86,98,125,135,150,162,173,185);


var XI,YJ,Tamanho :  Integer;
    CXPos         :  array[1..4] of integer;
    NumVez        :  Boolean;
    EntradaNumerica: boolean;
    Exist         :  boolean;


Procedure PintaTam(xXI,yYJ,W : Integer);
Procedure ApagaCell(xXI,yYJ,W : Integer);
Procedure ApagaCell2(xXI,yYJ,W : Integer);
Procedure InsereDados;
Procedure AjustaTamanho;
Procedure AjustaTamanho2;
Procedure AnaliseDados;
Procedure EscrevaDados;
procedure GDados;
Procedure LeiaDados;
Procedure LeituraArNervos;
Procedure MovePrimeiraCell;
Procedure GetCell;
Procedure MoveCellD;
Procedure MoveCellDW;
Procedure MoveCellUp;
procedure Beep;
Procedure VelhosDados;
Procedure NovosDados;
Procedure Analise;


Implementation

Procedure EscrevaDados;

var ii,jj : integer;

begin
   XI:=1;
   for YJ:=8 to 12 do begin
       ajustaTamanho;
       apagacell(CXPos[XI],CYPos[YJ],tamanho);
    end;
    setviewPort(initX,InitY,FinX,FinY,true);
  setFillstyle(1,0);
end;



procedure GDados;
   begin
     assign(fichas,'Temp'+'.fca');
      (***   {$I-}
       reset(fichas);
       {$I+};
       exist:= (IOresult=0);
       if not exist then Rewrite(fichas);
       seek(fichas,Filesize(fichas));***)
       Rewrite(Fichas);
       write(fichas,fichau);
       close(fichas);
   end;

Procedure OndaSs;

var newgain,oldgain   :   integer;

Begin
   ch:='s';
   setcolor(14);
   WriteText(PosX+60,TamY-30,'uV');
   setcolor(15);
   escapeemg:=true;
   IEscY:=6;
   corrigeY;
   IEscX:=1;
   Irate:=1;
   setfillstyle(11,9);
   setcolor(14);
   WriteText(PosX+10*h,TamY-15,real2str(rate[IRate]));
   setcolor(15);
   setfillstyle(0,1);
   Iduration:=1;
   a:=0;
   newgain:=ganho;
      If oldgain<>newgain then begin
          ganho:=newgain;
          adganho(bd,ganho);
          DefineCalibracaoY;
        end;
    MudaX;
    MudaY;
    marcatexto(PosX,InitY+14*15,'S');
  End;


Procedure LeituraArNervos;

  begin
      assign(fichas,'Temp'+'.fca');
       {$I-}
       reset(fichas);
       {$I+};
       exist:= (IOresult=0);
       if not exist then OutText('arquivo nao encontrado...');
       n:=0;
      repeat
       n:=n+1;
        with nervou do
         begin
           seek(nervos,n-1);
            read(fichas,fichau);
                  end;
                  readln;
      Until EOF(fichas);
           close(fichas);
 end;



Procedure LeiaDados;
var  j  :  integer;
   teste :  boolean;

      begin
     assign(fichas,'Temp'+'.fca');
       {$I-}
       reset(fichas);
       {$I+};
       exist:= (IOresult=0);
       if exist then
       begin
       {j:=FileSize(fichas);}
         j:=1;
         with fichau do
            begin
              seek(fichas,j-1);
              read(fichas,fichau);
             end;
           teste:=EOF(fichas);
        close(fichas);
      end else begin
      OutText('problema no computador.!!');
     end;
  end;


Procedure MostraCon;
var
    n            :    integer;
    ViewPort     :   ViewPortType;
    Year,month,day,dayofweek : word;

begin
     SetViewPort(0,0,GetMaxX,GetMaxY,true);
     SetViewPort(PosXJanCont,PosYJanCont,TamX,TamY,True);
     GetViewSettings(ViewPort);
     setcolor(15);
     setfillstyle(11,9);
     {ClearViewPort;}
     PosX:=4;
     Bar(1,1,TamX-1,TamY-PosYJanCont-1);
     rectangle(0,0,TamX,TamY-PosYJanCont);
     WriteText(PosX,posY+PosYjanCont+2,'Exame# : ');
     GetDate(year,month,day,dayofweek);
     WriteText(PosX,posY+PosYjanCont+2+h,'Data:');
     WriteText(PosX+50,posY+PosYjanCont+2+h,int2str(day)+'/'+int2str(month)+'/'+int2str(year));
     WriteText(PosX,posY+PosYjanCont+2*h+2,'Nome:');
     WriteText(PosX,posY+PosYjanCont+3*h+2,'Id/Sx:');
     WriteText(PosX,posY+PosYjanCont+4*h+2,'Dr:');
     WriteText(PosX,posY+PosYjanCont+5*h+3,'Segmento:');
     setcolor(14);
     WriteText(PosX+2,TamY-40,'Hor    Vert    freq    dur ');
     WriteText(PosX,TamY-30,' ms     uV     Hz      ms');




          case IEscY of
     0..3     :  begin
                   WriteText(PosX,TamY-30,' ms     nV     Hz      ms');
              end;
     4..12  :  begin
                   WriteText(PosX,TamY-30,' ms     uV     Hz      ms');
              end;
    13..16  :  begin
                   WriteText(PosX,TamY-30,' ms     mV     Hz      ms');
               end;
          end;




     WriteText(PosX,TamY-15,Real1Str(EscX[IEscX]/2));

     WriteText(PosX+10*h,TamY-15,real2str(rate[IRate]));
     WriteText(PosX+15*h,TamY-15,real2str(duration[IDuration]));
     SetViewPort(initx,inity,finx,finy,clipon);
     setcolor(15);
end;

(**********
{programa CN}
Procedure ClearResultados;

var
    n            :    integer;
    ViewPort     :   ViewPortType;

begin
     SetViewPort(0,0,GetMaxX,GetMaxY,true);
     SetViewPort(PosX2JanCont,PosY2JanCont,Tam2X,Tam2Y,false);
     setcolor(15);
     PosX:=4;
     Pos2Y:=2;
     h:=12;
     Imem:=1;
     setfillstyle(9,9);
     Bar(1,1,Tam2X-1,Tam2Y-PosY2JanCont-1);
     WriteText(PosX+15,pos2Y+PosY2janCont,'    Estimulo           Captacao      esp  dT(cm)');
     WriteText(PosX+hx+40,pos2Y+PosY2janCont,'L(ms) Ampl  D(ms)  arEa');
     {WriteText(PosX+hx+40,pos2Y+PosY2janCont,'L(ms) Ampl  D(ms) V(m/s)');}
     {WriteText(PosX+hx+40,pos2Y+PosY2janCont+h,' ms            ms  mVms');}
end;

***************************)

{programa ECN}


Procedure MarcaVelocidade;

var
   chhh : Char;

Begin

     Beep;                             {  case nervou.Mem[1650,ii] of
                                          10000     :  setcolor(15);
                                           5000     :  setcolor(4);
                                           3000    :  setcolor(3);}

     chhh:=readKey;
     beep;
     case chhh of
        'a'   :   nervou.Mem[1650,YJ]:=5000;
        'b'   :   nervou.Mem[1650,YJ]:=3000;
        'n'   :   nervou.Mem[1650,YJ]:=10000;
      end
end;







Procedure ClearResultados;

var
    n            :    integer;
    ViewPort     :   ViewPortType;

begin
     SetViewPort(0,0,GetMaxX,GetMaxY,true);
     SetViewPort(PosX2JanCont,PosY2JanCont,Tam2X,Tam2Y,false);
     setcolor(15);
     PosX:=4;
     Pos2Y:=2;
     h:=12;
     Imem:=1;
     setfillstyle(9,9);
     Bar(1,1,Tam2X-1,Tam2Y-PosY2JanCont-1);

     WriteText(PosX,pos2Y+PosY2janCont,' ');
     WriteText(PosX+15,pos2Y+PosY2janCont,'   Estimulo         Registro               disT');
     WriteText(PosX+hx+35,pos2Y+PosY2janCont,'Laten  Ampl   Dura Veloc');

end;


procedure Beep;

begin
  sound(1000);
  delay(100);
  NoSound;
end;

Procedure PintaTam(xXI,yYJ,W : Integer);


 const Altura  = 10;

begin
     setViewPort(0,0,GetMaxX,GetMaxY,True);
     setfillstyle(1,6);
     Bar(xXI,yYJ,xXI+W,yYJ+altura);
     setfillstyle(0,1);
     setViewport(InitX,InitY,FinX,FinY,True);
end;

Procedure AjustaTamanho;

begin
    case XI of
     1      :  begin
                    case YJ of
                      1..7 : begin
                                tamanho:=130;
                                CXPos[XI]:=35;
                                setfillStyle(9,9);
                                EntradaNumerica:=false;
                             end;
                      8    : begin
                                tamanho:=80;
                                CXPos[XI]:=95;
                                setFillStyle(11,9);
                                entradaNumerica:=false;
                             end;
                      9    : begin
                                 tamanho:=90;
                                 CXPos[XI]:=51;
                                 setfillstyle(11,9);
                                 entradaNumerica:=false;
                              end;
                      10   : begin
                                 tamanho:=180;
                                 CXPos[XI]:=45;
                                 setfillstyle(11,9);
                                 entradaNumerica:=false;
                              end;
                      11   : begin
                                 tamanho:=100;
                                 CXPos[XI]:=50;
                                 setfillstyle(11,9);
                                 entradaNumerica:=false;
                              end;
                      12   : begin
                                 tamanho:=200;
                                 CXPos[XI]:=35;
                                 setfillstyle(11,9);
                                 entradaNumerica:=false;
                              end;
                      13   : begin
                                 tamanho:=130;
                                 CXPos[XI]:=80;
                                 setfillstyle(11,9);
                                 entradaNumerica:=false;
                              end;
                     end;
                end;
     2       :  begin
                    case YJ of
                      1..7 : begin
                                tamanho:=135;
                                CXPos[XI]:=170;
                                setfillStyle(9,9);
                                entradaNumerica:=false;
                             end;
                      end;
               end;
     3      :  begin
                    SetFillStyle(9,9);
                    case YJ of
                       1..7 : begin
                                   Tamanho:=12;
                                   CXPos[XI]:=320;
                                   setfillstyle(9,9);
                                   entradaNumerica:=False;
                              end;
                    end;
                end;
     4      :  begin
                    setfillstyle(9,9);
                    entradaNumerica:=true;
                    CXPos[XI]:=355;
                    case YJ of
                    1..7  :  tamanho:=45;
                    end;
               end else Tamanho:=0;
     end;
end;

Procedure AjustaTamanho2;

begin
    case XI of
     1      :  begin
                    case YJ of
                      1..7 : begin
                                tamanho:=130;
                                CXPos[XI]:=35;
                                setfillStyle(11,9);
                                EntradaNumerica:=false;
                             end;
                      8    : begin
                                tamanho:=80;
                                CXPos[XI]:=95;
                                setFillStyle(11,9);
                                entradaNumerica:=false;
                             end;
                      9    : begin
                                 tamanho:=90;
                                 CXPos[XI]:=51;
                                 setfillstyle(11,9);
                                 entradaNumerica:=false;
                              end;
                      10   : begin
                                 tamanho:=180;
                                 CXPos[XI]:=45;
                                 setfillstyle(11,9);
                                 entradaNumerica:=false;
                              end;
                      11   : begin
                                 tamanho:=100;
                                 CXPos[XI]:=50;
                                 setfillstyle(11,9);
                                 entradaNumerica:=false;
                              end;
                      12   : begin
                                 tamanho:=200;
                                 CXPos[XI]:=35;
                                 setfillstyle(11,9);
                                 entradaNumerica:=false;
                              end;
                      13   : begin
                                 tamanho:=130;
                                 CXPos[XI]:=80;
                                 setfillstyle(11,9);
                                 entradaNumerica:=false;
                              end;
                     end;
                end;
     2       :  begin
                    case YJ of
                      1..7 : begin
                                tamanho:=135;
                                CXPos[XI]:=170;
                                setfillStyle(11,9);
                                entradaNumerica:=false;
                             end;
                      end;
               end;
     3      :  begin
                    SetFillStyle(11,9);
                    case YJ of
                       1..7 : begin
                                   Tamanho:=12;
                                   CXPos[XI]:=320;
                                   setfillstyle(11,9);
                                   entradaNumerica:=False;
                              end;
                    end;
                end;
     4      :  begin
                    setfillstyle(11,9);
                    entradaNumerica:=true;
                    CXPos[XI]:=355;
                    case YJ of
                    1..7  :  tamanho:=45;
                    end;
               end else Tamanho:=0;
     end;
end;

Procedure ApagaCell(xXI,yYJ,W : Integer);

const Altura  = 10;

begin

      { case nervou.mem[1650,Yj] of
            0..3000  :  setcolor(15);
            5000     :  setcolor(3);
            10000    :  setcolor(2);
            end;}

     setfillstyle(9,9);
    { WriteText(PosX+3,pos2Y+PosY2janCont+(Imem+1)*h,Int2Str(Imem));
     WriteText(PosX+320,pos2Y+PosY2janCont+(Imem+1)*h,dados[3,YJ]);}
     ajustaTamanho;
     setViewPort(0,0,GetMaxX,GetMaxY,True);
     Bar(xXI,yYJ,xXI+W,yYJ+altura);
     setViewport(InitX,InitY,FinX,FinY,True);
     SetViewPort(CXPos[XI],CYPos[Yj],CXPos[XI]+Tamanho,CYPos[YJ]+10,True);
     MoveTo(5,2);
     if not (EntradaNumerica) then OutText(nervou.dados[XI,YJ])
      else begin
        if nervou.dados[XI,YJ]<>'0.0' then OutText(nervou.dados[XI,YJ]);
       end;
     setfillstyle(0,1);
     setcolor(15);
end;
Procedure ApagaCell2(xXI,yYJ,W : Integer);

const Altura  = 10;

begin
{  case nervou.mem[1650,YJ] of
            0..3000  :  setcolor(15);
            5000     :  setcolor(3);
            10000    :  setcolor(2);
            end;}

     setfillstyle(11,9);
    { WriteText(PosX+3,pos2Y+PosY2janCont+(Imem+1)*h,Int2Str(Imem));
     WriteText(PosX+320,pos2Y+PosY2janCont+(Imem+1)*h,dados[3,YJ]);}
     ajustaTamanho2;
     setViewPort(0,0,GetMaxX,GetMaxY,True);
     Bar(xXI,yYJ,xXI+W,yYJ+altura);
     setViewport(InitX,InitY,FinX,FinY,True);
     SetViewPort(CXPos[XI],CYPos[Yj],CXPos[XI]+Tamanho,CYPos[YJ]+10,True);
     MoveTo(5,2);
     OutText(nervou.dados[XI,YJ]);
     setfillstyle(0,1);
     setcolor(15);
end;

Procedure LimpaCell(xXI,yYJ,W : Integer);

const Altura  = 10;

begin
     SetColor(15);
     setFillStyle(9,9);
     ajustaTamanho;
     setViewPort(0,0,GetMaxX,GetMaxY,True);
     Bar(xXI,yYJ,xXI+W,yYJ+altura);
     setViewport(InitX,InitY,FinX,FinY,True);
     setfillstyle(0,1);
end;


Procedure Celula(xXI,yYJ,w: integer);

begin
     PintaTam(xXI,yYJ,w);
     SetViewPort(CXPos[XI],CYPos[Yj],CXPos[XI]+Tamanho,CYPos[YJ]+10,True);
     MoveTo(5,0);
      if not (EntradaNumerica) then OutText(nervou.dados[XI,YJ])
      else begin
        if nervou.dados[XI,YJ]<>'0.0' then OutText(nervou.dados[XI,YJ]);
       end;
     setfillstyle(0,1);
end;

Procedure MoveCellD;

begin
     ApagaCell(CXPos[XI],CYpos[YJ],Tamanho);
     case YJ of
        1..7  :  If XI<5 then XI:=XI+1;
        8..13 :  If XI>1 then begin
                       XI:=1;
                       YJ:=YJ+1;
                  end;
        13      :  If (XI>1) then begin
                   XI:=1;
                   YJ:=1;
                   end;
     end;
     If (XI=5) then begin
      If Imem<7 then Imem:=Imem+1 else Imem:=7;
      SetColor(15);
      setFillStyle(9,9);
      WriteText(PosX+3,pos2Y+PosY2janCont+(Imem-1)*h,Int2Str(Imem-1));
      WriteText(PosX+320,pos2Y+PosY2janCont+(Imem-1)*h,nervou.esp[Imem-1]);
      XI:=1;
      YJ:=YJ+1;
      SetColor(6);
      setFillStyle(9,9);
      WriteText(PosX+3,pos2Y+PosY2janCont+(Imem)*h,Int2Str(Imem));
      WriteText(PosX+320,pos2Y+PosY2janCont+(Imem)*h,nervou.dados[3,YJ]);
      SetColor(15);
     If XI=4 then entradaNumerica:=true else entradaNumerica:=false;
     end;
     AjustaTamanho;
     Celula(CXPos[XI],CYpos[YJ],tamanho);
     If YJ<7 then Imem:=YJ else YJ:=7;
     SetFillStyle(0,1);
     
end;

Procedure MoveCellE;

begin
     ApagaCell(CXPos[XI],CYpos[YJ],Tamanho);
     If XI>1 then XI:=XI-1 else XI:=1;
     SetColor(6);
     setFillStyle(9,9);
     {WriteText(PosX+3,pos2Y+PosY2janCont+(Imem+1)*h,Int2Str(Imem));
     WriteText(PosX+320,pos2Y+PosY2janCont+(Imem+1)*h,dados[3,YJ]);}
     SetColor(15);
     SetFillStyle(0,1);
     AjustaTamanho;
     Celula(CXPos[XI],CYpos[YJ],Tamanho);
end;

Procedure MovePrimeiraCell;

begin
     ApagaCell(CXPos[XI],CYpos[YJ],Tamanho);
     SetColor(15);
     setFillStyle(9,9);
     WriteText(PosX+3,pos2Y+PosY2janCont+(Imem)*h,Int2Str(Imem));
     WriteText(PosX+320,pos2Y+PosY2janCont+(Imem)*h,nervou.esp[Imem]);
     XI:=4;
     Yj:=1;
     SetColor(15);
     Imem:=1;
     setcolor(6);
     setFillStyle(9,9);
     WriteText(PosX+3,pos2Y+PosY2janCont+(Imem)*h,Int2Str(Imem));
     WriteText(PosX+320,pos2Y+PosY2janCont+(Imem)*h,nervou.esp[Imem]);
     SetColor(15);
     SetFillStyle(0,1);
     AjustaTamanho;
     Celula(CXPos[XI],CYpos[YJ],Tamanho);
end;

Procedure MovecellOO;

var
 OldMem   :    integer;

begin
     OldMem:=Imem;
     ApagaCell(CXPos[XI],CYpos[YJ],Tamanho);
     SetColor(15);
     setFillStyle(9,9);
     WriteText(PosX+3,pos2Y+PosY2janCont+(Imem)*h,Int2Str(Imem));
     WriteText(PosX+320,pos2Y+PosY2janCont+(Imem)*h,nervou.esp[Imem]);
     XI:=1;
     Yj:=Imem;
     SetColor(15);
    { Imem:=1;}
     setcolor(6);
     setFillStyle(9,9);
     WriteText(PosX+3,pos2Y+PosY2janCont+(Imem)*h,Int2Str(Imem));
     WriteText(PosX+320,pos2Y+PosY2janCont+(Imem)*h,nervou.esp[Imem]);
     SetColor(15);
     SetFillStyle(0,1);
     AjustaTamanho;
     Celula(CXPos[XI],CYpos[YJ],Tamanho);
     Imem:=oldmem;
end;

Procedure MoveUltimaCell;

begin
     ApagaCell(CXPos[XI],CYpos[YJ],Tamanho);
     SetColor(15);
     setFillStyle(9,9);
     WriteText(PosX+3,pos2Y+PosY2janCont+(Imem)*h,Int2Str(Imem));
     WriteText(PosX+320,pos2Y+PosY2janCont+(Imem)*h,nervou.dados[3,YJ]);
     XI:=1;
     Yj:=6;
     Celula(CXPos[XI],CYpos[YJ],Tamanho);
     Imem:=6;
     SetColor(6);
     setFillStyle(9,9);
     WriteText(PosX+3,pos2Y+PosY2janCont+(Imem)*h,Int2Str(Imem));
     WriteText(PosX+320,pos2Y+PosY2janCont+(Imem)*h,nervou.dados[3,YJ]);
     SetColor(15);
     AjustaTamanho;
     SetFillStyle(0,1);
end;

Procedure MoveCellNome;
var OldImem  : integer;

begin
     SetColor(15);
     setFillStyle(9,9);
     WriteText(PosX+3,pos2Y+PosY2janCont+(Imem)*h,Int2Str(Imem));
     XI:=1;
     YJ:=10;
     Imem:=7;
     AjustaTamanho;
     SetColor(6);
     setFillStyle(9,9);
     {WriteText(PosX+3,pos2Y+PosY2janCont+(Imem)*h,Int2Str(Imem));
     WriteText(PosX+320,pos2Y+PosY2janCont+(Imem)*h,dados[3,YJ]);}
     SetColor(15);
     SetFillStyle(0,1);
     Celula(CXPos[XI],CYpos[YJ],Tamanho);
end;

Procedure MoveCellDw;

begin
     ApagaCell(CXPos[XI],CYpos[YJ],Tamanho);
     SetColor(15);
     setFillStyle(9,9);
     WriteText(PosX+3,pos2Y+PosY2janCont+(Imem)*h,Int2Str(Imem));
     WriteText(PosX+320,pos2Y+PosY2janCont+(Imem)*h,nervou.esp[Imem]);
     If (YJ<13) and (XI=1) then Yj:=YJ+1 else
     begin
          If (YJ<7) and (XI>1) then YJ:=YJ+1;
          If (YJ>7) and (XI>1) then YJ:=7;
          If (YJ>=13) and (XI=1) then YJ:=13;
     end;
     If Imem<7 then Imem:=Imem+1 else Imem:=7;
     if (nervou.dados[XI,YJ]='')
        and (Imem>1)
        and (ch<>'O')
        and (XI<3)
         and (YJ<8)
        then nervou.dados[XI,YJ]:=nervou.dados[XI,YJ-1];
     SetColor(15);
     setFillStyle(1,0);
     WriteText(PosX+3,pos2Y+PosY2janCont+(Imem)*h,Int2Str(Imem));
     WriteText(PosX+320,pos2Y+PosY2janCont+(Imem)*h,nervou.esp[Imem]);
     SetColor(15);
     SetFillStyle(0,1);
     AjustaTamanho;
     Celula(CXPos[XI],CYpos[YJ],Tamanho);
end;

Procedure MoveCellUp;

begin
     ApagaCell(CXPos[XI],CYpos[YJ],Tamanho);
     SetColor(15);
     setFillStyle(9,9);
     WriteText(PosX+3,pos2Y+PosY2janCont+(Imem)*h,Int2Str(Imem));
     WriteText(PosX+320,pos2Y+PosY2janCont+(Imem)*h,nervou.esp[Imem]);
     If YJ>1 then Yj:=YJ-1 else YJ:=1;
     If (Imem>1) and (YJ<7) then Imem:=Imem-1;
     If (Imem>1) and (YJ>=7) then Imem:=7;
     If Imem<1 then Imem:=1;
     SetColor(15);
     setFillStyle(0,1);
     WriteText(PosX+3,pos2Y+PosY2janCont+(Imem)*h,Int2Str(Imem));
     WriteText(PosX+320,pos2Y+PosY2janCont+(Imem)*h,nervou.esp[Imem]);
     SetColor(15);
     SetFillStyle(0,1);
     AjustaTamanho;
     Celula(CXPos[XI],CYpos[YJ],Tamanho);
end;


(******************************

Programa CN

Procedure AnaliseDados;

Const
     PosVert =  220;
var  ii,jj  :  integer;
     contador : integer;

begin
     ii:=1;
     jj:=1;
     contador:=1;
     setFillStyle(11,9);
     setviewport(PosX,PosVert-1,PosX+300,PosVert+11*h,true);
     bar(0,0,PosX+226,80+10*h);
     setViewPort(INitX,InitY,FinX,FinY,true);
     setfillstyle(11,9);
     if nervou.memI[ii,1]<>0 then begin
     WriteText(posX,PosVert-h,'  Velocidade de Conducao');
     WriteText(posX,PosVert,'  de          a          m/s');
     end;
     repeat
                case nervou.esp[ii] of
         #0,'s','a'   :    begin
                         if ((nervou.memI[ii,1]>0) and (nervou.memI[ii,1]<1000))
                         and ((nervou.distancia[ii]>0) and (nervou.distancia[ii]<250)) then
                         begin
                            writeText(PosX,Posvert+(contador)*h,nervou.dados[1,ii]);
                            writeText(PosX+95,Posvert+(contador)*h,' '+nervou.dados[2,ii]);
                            writeText(PosX+160,Posvert+(contador)*h,' '+nervou.esp[ii]);
                            writeText(PosX+193,Posvert+(contador)*h,Real1str(10*nervou.distancia[ii]/nervou.memI[ii,1]));
                          {  WriteText(PosX+194+hx,pos2Y+PosY2janCont+hh+
                            (contador)*h,Real1str(10*nervou.distancia[ii]/nervou.memI[ii,1]));}
                           contador:=contador+1
                          end;
                      end;
            'm'   :    begin{1}
                         if ((nervou.memI[ii,1]>0) and (nervou.memI[ii,1]<1000))
                         and ((nervou.distancia[ii]>0) and (nervou.distancia[ii]<250)) then
                         begin {2}
                            jj:=ii+1;
                            repeat
                              If nervou.esp[jj]='m' then
                                    begin
                                       writeText(PosX,Posvert+(contador)*h,nervou.dados[1,jj]);
                                       writeText(PosX+95,Posvert+(contador)*h,' '+nervou.dados[1,ii]);
                                       writeText(PosX+160,Posvert+(contador)*h,' '+nervou.esp[ii]);
                                       writeText(PosX+193,Posvert+(contador)*h,
                                       Real1str(10*abs(
                                       nervou.distancia[ii]-nervou.distancia[jj])
                                       /abs(0.01+nervou.memI[ii,1]-nervou.memI[jj,1])));
                                       contador:=contador+1;
                                     end;
                                jj:=jj+1;
                              Until (nervou.esp[jj]=#0) or (jj>8);
                         end;{2}
                      end;{1}
          'A'   :  begin
                         if ((nervou.memI[ii,1]>0) and (nervou.memI[ii,1]<1000))
                         and ((nervou.distancia[ii]>0) and (nervou.distancia[ii]<250)) then
                         begin
                            writeText(PosX,Posvert+(contador)*h,nervou.dados[1,ii]);
                            writeText(PosX+95,Posvert+(contador)*h,' '+nervou.dados[2,ii]);
                            writeText(PosX+160,Posvert+(contador)*h,' '+nervou.esp[ii]);
                            writeText(PosX+193,Posvert+(contador)*h,Real1str(10*nervou.distancia[ii]/nervou.memI[ii,1]));
                            contador:=contador+1
                        end;
                         if ((nervou.memI[ii,1]>0) and (nervou.memI[ii,1]<1000))
                         and ((nervou.distancia[ii]>0) and (nervou.distancia[ii]<250)) then
                         begin {2}
                            jj:=ii+1;
                            repeat
                              If nervou.esp[jj]='a' then
                                    begin
                                       writeText(PosX,Posvert+(contador)*h,nervou.dados[1,jj]);
                                       writeText(PosX+95,Posvert+(contador)*h,' '+nervou.dados[1,ii]);
                                       writeText(PosX+160,Posvert+(contador)*h,' '+nervou.esp[ii]);
                                       writeText(PosX+193,Posvert+(contador)*h,
                                       Real1str(10*abs(nervou.distancia[ii]-nervou.distancia[jj])/abs(nervou.memI[ii,1]-nervou.
                                       memI[jj,1])));
                                       contador:=contador+1;
                                     end;
                                jj:=jj+1;
                              Until (nervou.esp[jj]=#0) or (jj>8);
                         end;{2}
                         end;
           'e'   :  begin
                         if ((nervou.memI[ii,1]>0) and (nervou.memI[ii,1]<1000))
                         and ((nervou.distancia[ii]>0) and (nervou.distancia[ii]<250)) then
                         begin
                            writeText(PosX,Posvert+(contador)*h,nervou.dados[1,ii]);
                            writeText(PosX+95,Posvert+(contador)*h,' '+nervou.dados[2,ii]);
                            writeText(PosX+160,Posvert+(contador)*h,' '+nervou.esp[ii]);
                            writeText(PosX+193,Posvert+(contador)*h,Real1str(10*nervou.distancia[ii]/nervou.memI[ii,1]));
                            contador:=contador+1
                        end;
                         if ((nervou.memI[ii,1]>0) and (nervou.memI[ii,1]<1000))
                         and ((nervou.distancia[ii]>0) and (nervou.distancia[ii]<250)) then
                         begin {2}
                            jj:=ii+1;
                            repeat
                              If nervou.esp[jj]='o' then
                                    begin
                                       writeText(PosX,Posvert+(contador)*h,nervou.dados[2,ii]);
                                       writeText(PosX+95,Posvert+(contador)*h,' '+nervou.dados[2,jj]);
                                       writeText(PosX+160,Posvert+(contador)*h,' '+nervou.esp[ii]);
                                       writeText(PosX+193,Posvert+(contador)*h,
                                       Real1str(10*abs(nervou.distancia[ii]-nervou.distancia[jj])/
                                       abs(0.01+nervou.memI[ii,1]-nervou.memI[jj,1])));
                                       contador:=contador+1;
                                     end;
                                jj:=jj+1;
                              Until (nervou.esp[jj]=#0) or (jj>8);
                         end;{2}
                         end;
           end;
           ii:=ii+1;
     Until (nervou.esp[ii]=#0) or (ii>7);
end;

***************************************************************************)


{Programa    ECN}


Procedure AnaliseDados;

Const
     PosVert =  220;
var  ii,jj  :  integer;
     contador : integer;

begin
     ii:=1;
     jj:=1;
     contador:=1;
     setFillStyle(11,9);
     setviewport(PosX,PosVert-1,PosX+300,PosVert+11*h,true);
     bar(0,0,PosX+226,80+10*h);
     setViewPort(INitX,InitY,FinX,FinY,true);
     setfillstyle(11,9);
    (** if nervou.memI[ii,1]<>0 then begin
     WriteText(posX,PosVert-h,'  Velocidade de Conducao');
     WriteText(posX,PosVert,'  de          a          m/s');
     end;*)
     repeat
               case nervou.esp[ii] of
         #0,'s','a'   :    begin
                          case nervou.Mem[1650,ii] of
                              10000     :  setcolor(15);
                              5000     :  setcolor(4);
                              3000    :  setcolor(3);
                            end;

                         If not ((nervou.dados[1,ii]='') or (nervou.dados[1,ii]=' ')) then
                         begin
                            {writeText(PosX,Posvert+(contador)*h,nervou.dados[1,ii]);
                            writeText(PosX+95,Posvert+(contador)*h,' '+nervou.dados[2,ii]);
                            writeText(PosX+160,Posvert+(contador)*h,' '+nervou.esp[ii]);
                            writeText(PosX+193,Posvert+(contador)*h,Real1str(10*nervou.distancia[ii]/nervou.memI[ii,1]));}
                            if ((nervou.memI[ii,1]>0.01) and (nervou.memI[ii,1]<1000))
                            then  begin
                              WriteText(PosX+194+hx,pos2Y+PosY2janCont+hh+
                              (ii)*h,Real1str(10*nervou.distancia[ii]/nervou.memI[ii,1]));
                            contador:=contador+1;
                          end else begin
                           if ((nervou.memI[ii,1]>-0.001) and (nervou.distancia[ii]>0.01))
                           then begin
                            WriteText(PosX+194+hx,pos2Y+PosY2janCont+hh+
                            (ii)*h,Real1str(0));
                            contador:=contador+1;
                          end;
                          end;
                          end;
                      end;
            'm'   :    begin{1}
                           case nervou.Mem[1650,ii] of
                              3000  :  setcolor(3);
                              5000     :  setcolor(4);
                              10000    :  setcolor(15);
                             end;

                         if (ii>1) and (nervou.esp[ii-1]='m') and ((nervou.memI[ii,1]>0.1) and (nervou.memI[ii,1]<1000))
                         and ((nervou.distancia[ii]>0.5) and (nervou.distancia[ii]<250)) then
                         If nervou.esp[ii-1]='m' then begin {2}
                          If (10*abs(nervou.distancia[ii])
                          /abs(0.01+nervou.memI[ii-1,1]-nervou.memI[ii,1]))>0.1 then
                          WriteText(PosX+194+hx,pos2Y+PosY2janCont+hh+
                          (ii)*h,Real1str(10*abs(nervou.distancia[ii])
                          /abs(0.01+nervou.memI[ii-1,1]-nervou.memI[ii,1])))
                          else  WriteText(PosX+194+hx,pos2Y+PosY2janCont+hh+
                            (ii)*h,Real1str(0));;
                           contador:=contador+1;


                          (*  jj:=ii+1;
                            repeat
                              If nervou.esp[jj]='m' then
                                    begin
                                       writeText(PosX,Posvert+(contador)*h,nervou.dados[1,jj]);
                                       writeText(PosX+95,Posvert+(contador)*h,' '+nervou.dados[1,ii]);
                                       writeText(PosX+160,Posvert+(contador)*h,' '+nervou.esp[ii]);
                                       writeText(PosX+193,Posvert+(contador)*h,
                                       Real1str(10*abs(
                                       nervou.distancia[ii]-nervou.distancia[jj])
                                       /abs(0.01+nervou.memI[ii,1]-nervou.memI[jj,1])));)
                                       JJ:=9;
                                     end;
                                jj:=jj+1;
                              Until (nervou.esp[jj]=#0) or (jj>8);*)
                         end;{2}
                      end;{1}
          'a','A'   :  begin
                         case nervou.Mem[1650,ii] of
                              3000  :  setcolor(3);
                              5000     :  setcolor(4);
                              10000    :  setcolor(15);
                             end;

                         if ((nervou.memI[ii,1]>0) and (nervou.memI[ii,1]<1000))
                         and ((nervou.distancia[ii]>0) and (nervou.distancia[ii]<250)) then
                         begin
                            writeText(PosX,Posvert+(contador)*h,nervou.dados[1,ii]);
                            writeText(PosX+95,Posvert+(contador)*h,' '+nervou.dados[2,ii]);
                            writeText(PosX+160,Posvert+(ii)*h,' '+nervou.esp[ii]);
                            writeText(PosX+193,Posvert+(ii)*h,Real1str(10*nervou.distancia[ii]/nervou.memI[ii,1]));
                            contador:=contador+1
                        end;
                         if ((nervou.memI[ii,1]>0) and (nervou.memI[ii,1]<1000))
                         and ((nervou.distancia[ii]>0) and (nervou.distancia[ii]<250)) then
                         begin {2}
                            jj:=ii+1;
                            repeat
                              If nervou.esp[jj]='a' then
                                    begin
                                       writeText(PosX,Posvert+(contador)*h,nervou.dados[1,jj]);
                                       writeText(PosX+95,Posvert+(contador)*h,' '+nervou.dados[1,ii]);
                                       writeText(PosX+160,Posvert+(contador)*h,' '+nervou.esp[ii]);
                                       writeText(PosX+193,Posvert+(contador)*h,
                                       Real1str(10*abs(nervou.distancia[ii]-nervou.distancia[jj])/abs(nervou.memI[ii,1]-nervou.
                                       memI[jj,1])));
                                       contador:=contador+1;
                                     end;
                                jj:=jj+1;
                              Until (nervou.esp[jj]=#0) or (jj>8);
                         end;{2}
                         end;
           'e','E'  :  begin

                          case nervou.Mem[1650,ii] of
                              3000  :  setcolor(3);
                              5000     :  setcolor(4);
                              10000    :  setcolor(15);
                             end;

                         WriteText(posX,PosVert-h,'  Velocidade de Conducao');
                         WriteText(posX,PosVert,'  de          a          m/s');
                         if ((nervou.memI[ii,1]>0) and (nervou.memI[ii,1]<1000))
                         and ((nervou.distancia[ii]>0) and (nervou.distancia[ii]<250)) then
                         begin
                            writeText(PosX,Posvert+(contador)*h,nervou.dados[1,ii]);
                            writeText(PosX+95,Posvert+(contador)*h,' '+nervou.dados[2,ii]);
                            writeText(PosX+160,Posvert+(contador)*h,' '+nervou.esp[ii]);
                            writeText(PosX+193,Posvert+(contador)*h,Real1str(10*nervou.distancia[ii]/nervou.memI[ii,1]));
                            contador:=contador+1
                        end;
                         if ((nervou.memI[ii,1]>0) and (nervou.memI[ii,1]<1000))
                         and ((nervou.distancia[ii]>0) and (nervou.distancia[ii]<250)) then
                         begin {2}
                            jj:=ii+1;
                            repeat
                              If (nervou.esp[jj]='e') or (Nervou.esp[jj]='E') then
                                    begin
                                       writeText(PosX,Posvert+(contador)*h,nervou.dados[2,ii]);
                                       writeText(PosX+95,Posvert+(contador)*h,' '+nervou.dados[2,jj]);
                                       writeText(PosX+160,Posvert+(contador)*h,' '+nervou.esp[ii]);
                                       writeText(PosX+193,Posvert+(contador)*h,
                                       Real1str(10*abs(nervou.distancia[ii]-nervou.distancia[jj])/
                                       abs(0.01+nervou.memI[ii,1]-nervou.memI[jj,1])));
                                       contador:=contador+1;
                                     end;
                                jj:=jj+1;
                              Until (nervou.esp[jj]=#0) or (jj>8);
                         end;{2}
                         end;
           end;
           ii:=ii+1;
           setcolor(15);
     Until (ii>7);
end;


Procedure Analise;

Const
     PosVert =  220;
var  ii,jj  :  integer;
     contador : integer;

begin
     ii:=1;
     jj:=1;
     contador:=1;
     setFillStyle(11,9);
     setviewport(PosX,PosVert-1,PosX+300,PosVert+11*h,true);
     bar(0,0,PosX+226,80+10*h);
     setViewPort(INitX,InitY,FinX,FinY,true);
     setfillstyle(11,9);
    (** if nervou.memI[ii,1]<>0 then begin
     WriteText(posX,PosVert-h,'  Velocidade de Conducao');
     WriteText(posX,PosVert,'  de          a          m/s');
     end;*)
     repeat
               case nervou.esp[ii] of
         #0,'s','a'   :    begin
                          case nervou.Mem[1650,ii] of
                              10000     :  setcolor(15);
                              5000     :  setcolor(4);
                              3000    :  setcolor(3);
                            end;

                         If not ((nervou.dados[1,ii]='') or (nervou.dados[1,ii]=' ')) then
                         begin
                            {writeText(PosX,Posvert+(contador)*h,nervou.dados[1,ii]);
                            writeText(PosX+95,Posvert+(contador)*h,' '+nervou.dados[2,ii]);
                            writeText(PosX+160,Posvert+(contador)*h,' '+nervou.esp[ii]);
                            writeText(PosX+193,Posvert+(contador)*h,Real1str(10*nervou.distancia[ii]/nervou.memI[ii,1]));}
                            if ((nervou.memI[ii,1]>0.01) and (nervou.memI[ii,1]<1000))
                            then  begin
                              WriteText(PosX+194+hx,pos2Y+PosY2janCont+hh+
                              (ii)*h,Real1str(10*nervou.distancia[ii]/nervou.memI[ii,1]));
                            contador:=contador+1;
                          end else begin
                           if ((nervou.memI[ii,1]>-0.001) and (nervou.distancia[ii]>0.01))
                           then begin
                            WriteText(PosX+194+hx,pos2Y+PosY2janCont+hh+
                            (ii)*h,Real1str(0));
                            contador:=contador+1;
                          end;
                          end;
                          end;
                      end;
            'm'   :    begin{1}
                           case nervou.Mem[1650,ii] of
                              3000  :  setcolor(3);
                              5000     :  setcolor(4);
                              10000    :  setcolor(15);
                             end;

                         if (nervou.esp[ii-1]='m') and ((nervou.memI[ii,1]>0.1) and (nervou.memI[ii,1]<1000))
                         and ((nervou.distancia[ii]>0.5) and (nervou.distancia[ii]<250)) then
                         If nervou.esp[ii-1]='m' then begin {2}
                          If (10*abs(nervou.distancia[ii])
                          /abs(0.01+nervou.memI[ii-1,1]-nervou.memI[ii,1]))>0.1 then
                          WriteText(PosX+194+hx,pos2Y+PosY2janCont+hh+
                          (ii)*h,Real1str(10*abs(nervou.distancia[ii])
                          /abs(0.01+nervou.memI[ii-1,1]-nervou.memI[ii,1])))
                          else  WriteText(PosX+194+hx,pos2Y+PosY2janCont+hh+
                            (ii)*h,Real1str(0));;
                           contador:=contador+1;
                          (*  jj:=ii+1;
                            repeat
                              If nervou.esp[jj]='m' then
                                    begin
                                       writeText(PosX,Posvert+(contador)*h,nervou.dados[1,jj]);
                                       writeText(PosX+95,Posvert+(contador)*h,' '+nervou.dados[1,ii]);
                                       writeText(PosX+160,Posvert+(contador)*h,' '+nervou.esp[ii]);
                                       writeText(PosX+193,Posvert+(contador)*h,
                                       Real1str(10*abs(
                                       nervou.distancia[ii]-nervou.distancia[jj])
                                       /abs(0.01+nervou.memI[ii,1]-nervou.memI[jj,1])));)
                                       JJ:=9;
                                     end;
                                jj:=jj+1;
                              Until (nervou.esp[jj]=#0) or (jj>8);*)
                         end;{2}
                      end;{1}
          'a','A'   :  begin
                         case nervou.Mem[1650,ii] of
                              3000  :  setcolor(3);
                              5000     :  setcolor(4);
                              10000    :  setcolor(15);
                             end;

                         if ((nervou.memI[ii,1]>0) and (nervou.memI[ii,1]<1000))
                         and ((nervou.distancia[ii]>0) and (nervou.distancia[ii]<250)) then
                         begin
                            writeText(PosX,Posvert+(contador)*h,nervou.dados[1,ii]);
                            writeText(PosX+95,Posvert+(contador)*h,' '+nervou.dados[2,ii]);
                            writeText(PosX+160,Posvert+(ii)*h,' '+nervou.esp[ii]);
                            writeText(PosX+193,Posvert+(ii)*h,Real1str(10*nervou.distancia[ii]/nervou.memI[ii,1]));
                            contador:=contador+1
                        end;
                         if ((nervou.memI[ii,1]>0) and (nervou.memI[ii,1]<1000))
                         and ((nervou.distancia[ii]>0) and (nervou.distancia[ii]<250)) then
                         begin {2}
                            jj:=ii+1;
                            repeat
                              If nervou.esp[jj]='a' then
                                    begin
                                       writeText(PosX,Posvert+(contador)*h,nervou.dados[1,jj]);
                                       writeText(PosX+95,Posvert+(contador)*h,' '+nervou.dados[1,ii]);
                                       writeText(PosX+160,Posvert+(contador)*h,' '+nervou.esp[ii]);
                                       writeText(PosX+193,Posvert+(contador)*h,
                                       Real1str(10*abs(nervou.distancia[ii]-nervou.distancia[jj])/abs(nervou.memI[ii,1]-nervou.
                                       memI[jj,1])));
                                       contador:=contador+1;
                                     end;
                                jj:=jj+1;
                              Until (nervou.esp[jj]=#0) or (jj>8);
                         end;{2}
                         end;
           'e','E'  :  begin

                          case nervou.Mem[1650,ii] of
                              3000  :  setcolor(3);
                              5000     :  setcolor(4);
                              10000    :  setcolor(15);
                             end;

                         WriteText(posX,PosVert-h,'  Velocidade de Conducao');
                         WriteText(posX,PosVert,'  de          a          m/s');
                         if ((nervou.memI[ii,1]>0) and (nervou.memI[ii,1]<1000))
                         and ((nervou.distancia[ii]>0) and (nervou.distancia[ii]<250)) then
                         begin
                            writeText(PosX,Posvert+(contador)*h,nervou.dados[1,ii]);
                            writeText(PosX+95,Posvert+(contador)*h,' '+nervou.dados[2,ii]);
                            writeText(PosX+160,Posvert+(contador)*h,' '+nervou.esp[ii]);
                            writeText(PosX+193,Posvert+(contador)*h,Real1str(10*nervou.distancia[ii]/nervou.memI[ii,1]));
                            contador:=contador+1
                        end;
                         if ((nervou.memI[ii,1]>0) and (nervou.memI[ii,1]<1000))
                         and ((nervou.distancia[ii]>0) and (nervou.distancia[ii]<250)) then
                         begin {2}
                            jj:=ii+1;
                            repeat
                              If (nervou.esp[jj]='e') or (Nervou.esp[jj]='E') then
                                    begin
                                       writeText(PosX,Posvert+(contador)*h,nervou.dados[2,ii]);
                                       writeText(PosX+95,Posvert+(contador)*h,' '+nervou.dados[2,jj]);
                                       writeText(PosX+160,Posvert+(contador)*h,' '+nervou.esp[ii]);
                                       writeText(PosX+193,Posvert+(contador)*h,
                                       Real1str(10*abs(nervou.distancia[ii]-nervou.distancia[jj])/
                                       abs(0.01+nervou.memI[ii,1]-nervou.memI[jj,1])));
                                       contador:=contador+1;
                                     end;
                                jj:=jj+1;
                              Until (nervou.esp[jj]=#0) or (jj>8);
                         end;{2}
                         end;
           end;
           ii:=ii+1;
           setcolor(15);
     Until (ii>7);
end;






Procedure GetCell;
const
     space  =   8;

var   str  :  String[80];
      Posi :  Integer;
      teste : Boolean;
      Legt  :  integer;
      code  :  integer;

begin
     SetViewPort(CXPos[XI],CYPos[Yj],CXPos[XI]+Tamanho,CYPos[YJ]+10,True);
     setFillstyle(1,6);
     Posi:=5;
     str:=ch;
     outTextXY(5,2,Str);
     Teste:=false;
     with nervou do
     repeat
       ch:=ReadKey;
       If ch=#0 then begin
       ch:=readKey;
       case ch of
        DArr      :  begin
                          setfillstyle(0,1);
                          Dados[XI,YJ]:=str;
                          If XI=3 then FillChar(esp[YJ],1,str[1]);
                          If entradaNumerica then
                          begin
                          Val(str,nervou.distancia[YJ],code);
                          If code=0 then moveCellDw;
                          end else
                          MovecellDw;
                          teste:=true;
                     end;
        UArr       :  begin
                          setfillstyle(0,1);
                          Dados[XI,YJ]:=str;
                          If XI=3 then FillChar(esp[YJ],1,str[1]);
                          If entradaNumerica then
                            begin
                              Val(str,distancia[YJ],code);
                              If code=0 then MoveCellUp
                            end else
                          MovecellUp;
                          teste:=true;
                     end;
        LArr       :  begin
                          setfillstyle(0,1);
                          Dados[XI,YJ]:=str;
                          If XI=3 then FillChar(esp[YJ],1,str[1]);
                          If entradaNumerica then
                          begin
                            Val(str,distancia[YJ],code);
                            If code=0 then MovecellE;
                          end else
                          MovecellE;
                          teste:=true;
                     end;
        #83       :  begin
                         bar(posi,0,posi+9,10);
                         If Length(str)>0 then begin
                         str:=copy(str,1,length(str)-1);
                         if posi>5 then Posi:=Posi-space else posi:=5;
                         If XI=3 then FillChar(esp[YJ],1,str[1]);
                         end;
                          If entradaNumerica then
                          begin
                            Val(str,distancia[YJ],code);
                           If code=0 then Posi:=Posi-space;
                           end;
                     end;
        RArr       :  begin
                          setfillstyle(0,1);
                          Dados[XI,YJ]:=str;
                          If XI=3 then FillChar(esp[YJ],1,str[1]);
                          If entradaNumerica then
                          begin
                            Val(str,distancia[YJ],code);
                            If code=0 then MoveCellD;
                          end else
                          MovecellD;
                          teste:=true;
                     end;
        #73       :  begin
                         Posi:=5;
                     end;
        #79       : begin
                      setfillstyle(0,1);
                      Dados[XI,YJ]:=str;
                      If XI=3 then FillChar(esp[YJ],1,str[1]);
                      If YJ<6 then MoveCellD else MovecellDw;
                      teste:=true;
                     { AnaliseDados;}
                  end;
       end;
       end
       else begin
       case ch of
       #13    : begin
                   beep;
                   Dados[XI,YJ]:=str;
                   If XI=3 then FillChar(esp[YJ],1,str[1]);
                   teste:=true;
                end;
       #27    : begin
                      setfillstyle(0,1);
                      Dados[XI,YJ]:=str;
                      If XI=3 then FillChar(esp[YJ],1,str[1]);
                      If YJ<6 then MoveCellD else MovecellDw;
                      teste:=true;
                      {AnaliseDados;}
                  end;
       ' '..'}' : begin
                     str:=Str+ch;
                     if Posi<(tamanho-12) then
                         begin
                           Posi:=Posi+space;
                           OutTextXY(Posi,2,ch);
                         end
                     else begin
                        beep;
                        bar(posi,0,posi+9,10);
                        OutTextXY(Posi,2,ch);
                      end;
                     If EntradaNumerica then
                  end;
       end;
       end;
     Until teste;
end;

Procedure ClearM;

var
  ii,jj  :  integer;
  year,month,day,dayofweek:word;

Begin
 If YJ>7 then
 begin
    ii:=1;
    for jj:= 9 to 12 do
    begin
      nervou.dados[ii,jj+1]:='';
      MoveCellDw;
    end;
   { for jj:=1 to 7 do for ii:=1 to 7 do nervou.MemI[jj,ii]:=0.0;}
    XI:=1;
    YJ:=9;
    GetDate(year,month,day,dayofweek);
    ApagaCell(CXPos[XI],CYpos[YJ],Tamanho);
    nervou.dados[1,9]:=Int2str(day)+'/'+int2str(month)+'/'+int2str(year);
    MoveCellNome;
 end;
end;



{$R-}

Procedure InsereDados;

const
     Esc    =    #27;
     ennd   =    #79;

var X,Y,ii,jj  :  integer;
    Tes        :  boolean;
    year,month,day,dayofweek:word;
    Num1,code  :   Integer;
    mem1       :   integer;

begin
     SetColor(15);
     mem1:=Imem;
     Imem:=1;
     setfillstyle(11,9);
     setViewPort(0,0,GetMaxX,GetMaxY,true);
     bar(PosX+2,400,PosX+200,412);
     setviewPort(initX,InitY,finX,finY,true);
     setFillstyle(0,1);
   Tes:=false;
    repeat
      ch:=readkey;
      if (ch<>#0) then begin
      case ch of
         {#79      :      tes:=true;}
       ' '..'}'   :      begin
                              LimpaCell(CXPos[XI],CYPos[YJ],tamanho);
                              PintaTam(CXPos[XI],CYPos[YJ],tamanho);
                              GetCell;
                           end;
        end;
        end
       else begin
       ch:=readkey;
       case  ch of
        LArr      :  MoveCellE;
        RArr      :  MoveCellD;
        #73       :  MovePrimeiraCell;
        #81       :  MoveUltimaCell;
        DArr      :  MoveCellDw;
        UArr      :  MoveCellUp;
        Ennd      :  Tes:=true;
        F1        :  MarcaVelocidade;
        F2        :  ClearM;
      end;
      end;
    Until Tes;
    ApagaCell(CXPos[XI],CYPos[YJ],Tamanho);
    XI:=1;
    YJ:=7;
    for II:=1 to 5 do fichau.dados[II]:=nervou.dados[1,YJ+II];
    If NumVez then GDados;
    NumVez:=False;
    setViewPort(0,0,GetMaxX,GetMaxY,True);
    setColor(15);
    setWriteMode(1);
    setFillStyle(9,9);
    setcolor(15);
    WriteText(PosX+3,pos2Y+PosY2janCont+(Imem)*h,Int2Str(Imem));
    WriteText(PosX+320,pos2Y+PosY2janCont+(Imem)*h,nervou.esp[Imem]);
    Imem:=mem1;
    setFillStyle(9,9);
    setcolor(6);
    WriteText(PosX+3,pos2Y+PosY2janCont+(Imem)*h,Int2Str(Imem));
    WriteText(PosX+320,pos2Y+PosY2janCont+(Imem)*h,nervou.esp[Imem]);
    SetColor(15);
    setfillstyle(1,0);
    SetViewPort(InitX,InitY,FinX,FinY,True);
end;

Procedure NovosDados;

const
     Esc    =    #27;
     ennd   =    #79;

var X,Y,ii,jj  :  integer;
    Tes        :  boolean;
    year,month,day,dayofweek:word;
    Num1,code  :   Integer;
    mem1       :   integer;
begin
  NumVez:=True;
  with nervou do
  If NumVez then
  begin
  for jj:=1 to 7 do nervou.esp[jj]:=#0;
  XI:=3;
  for jj:=1 to 7 do nervou.dados[XI,jj]:='';
  Leiadados;
  Val(fichau.dados[1],Num1,code);
  Num1:=Num1+1;
  str(num1,nervou.dados[1,8]);
  for ii:=1 to 2 do
begin
  for jj:= 1 to 13 do dados[ii,jj]:='';
     for jj:=1 to 7 do dados[4,jj]:='0.0';
    end;
   for jj:=1 to 7 do for ii:=1 to 7 do memI[jj,ii]:=0.0;
   ClearResultados;
   mostracon;
   oldchoice:='s';
   OndaSs;
   for jj:=1 to 7 do for ii:=1 to 7 do memI[jj,ii]:=0.0;
   GetDate(year,month,day,dayofweek);
   dados[1,9]:=Int2str(day)+'/'+int2str(month)+'/'+int2str(year);
   XI:=1;
   yj:=8;
   str(num1,nervou.dados[1,8]);
   ajustaTamanho;
   apagacell(CXPos[XI],CYPos[YJ],tamanho);
   MovecellNome;
   N_Paginas:=1;
   fichau.NPaginas:=1;
   OldPg:=0;
   end;
   inseredados;
end;

Procedure VelhosDados;

const
     Esc    =    #27;
     ennd   =    #79;

var X,Y,ii,jj  :  integer;
    Tes        :  boolean;
    year,month,day,dayofweek:word;
    Num1,code  :   Integer;
    mem1       :   integer;

begin
  { NumVez:=False;
   with nervou do
    for jj:=1 to 7 do
     begin
       if esp[jj]<>#0 then dados[3,jj]:=esp[jj] else esp[jj]:=#0;
     end;
     XI:=3;
     YJ:=1;
     Leiadados;
     Val(fichau.dados[1],Num1,code);
     str(num1,nervou.dados[1,8]);
     XI:=1;
     YJ:=7;
     for II:=1 to 5 do nervou.dados[1,YJ+II]:=fichau.dados[II];
     escrevadados;}
     MoveCellOO;
     inseredados;
end;

end.

